import axios from 'axios';
import useToken from '../stores/token'
import config from '../config'
import router from '../router'
import { showLoadingToast, showToast, closeToast} from 'vant'

// 创建axios实例
const baseURL = config.baseURL
const service = axios.create({ baseURL })

// 请求拦截器
service.interceptors.request.use(config => {
    // 获取token
    const { token } = useToken()
    // 显示加载中提示
    showLoadingToast({
        message: '加载中...',
        forbidClick: true,
        loadingType: 'spinner'
    })
    // 如果有token，则添加到请求头
    if (token) {
        config.headers.jwt = token
    }
    return config
})

// 响应拦截器
service.interceptors.response.use(
    response => { 
        // 关闭加载中提示
        closeToast()
        // 解析响应数据
        const { errno, data, errmsg } = response.data
        // 如果errno为0，表示请求成功
        if (errno === 0) {
            // 如果errmsg不为空，则显示成功提示
            if (errmsg !== '') {
                showToast({
                    message: errmsg, type: 'success'
                })
            }
            // 返回数据
            return data || true
        }
        // 如果errno不为0，则显示错误提示
        showToast({
            message: errmsg,
            type: 'error'
        })
        // 如果errno为2，则跳转到登录页面
        if (errno === 2) {
            router.push({ name: 'login' })
        }
        // 返回false
        return false
    },
    error => {
    // 关闭加载中提示
    closeToast()
    // 显示请求失败提示
    showToast ({
        message: '请求失败',
        type: 'fail'
    })
    // 打印错误信息
    console.log(error)
    }
)
// 导出axios实例
export default service